.\"
.\" This file and its contents are supplied under the terms of the
.\" Common Development and Distribution License ("CDDL"), version 1.0.
.\" You may only use this file in accordance with the terms of version
.\" 1.0 of the CDDL.
.\"
.\" A full copy of the text of the CDDL should have accompanied this
.\" source.  A copy of the CDDL is also available via the Internet at
.\" http://www.illumos.org/license/CDDL.
.\"
.\"
.\" Copyright 2015 Joyent, Inc.
.\"
.Dd May 11, 2016
.Dt PSETFLAGS 3PROC
.Os
.Sh NAME
.Nm Psetflags ,
.Nm Punsetflags
.Nd set and unset process flags
.Sh LIBRARY
.Lb libproc
.Sh SYNOPSIS
.In libproc.h
.Ft int
.Fo Psetflags
.Fa "struct ps_prochandle *P"
.Fa "long flags"
.Fc
.Ft int
.Fo Punsetflags
.Fa "struct ps_prochandle *P"
.Fa "long flags"
.Fc
.Sh DESCRIPTION
The
.Fn Psetflags
and
.Fn Punsetflags
functions manipulate the process flags for the process handle
.Fa P .
The process flags determine how the process behaves in the face of
various actions.
For example, setting the
.Sy PR_FORK
flag indicates that the tracing flags of the process and the
inherit-on-fork mode should be set on children.
A full list of the process flags is available in the
.Sy PCSET
section in
.Xr proc 5 .
.Pp
The
.Fn Psetflags
function sets the flags specified in
.Fa flags
by doing a bitwise-inclusive-OR with the previously set flags.
.Pp
The
.Fn Punsetflags
function removes the flags specified in
.Fa flags
from the tracing flags of the process.
Items not listed in
.Fa flags
will remain.
.Pp
To see the current set of flags active on the process, check the
.Sy pr_flags
member of the
.Sy pstatus_t
for the process.
It can be obtained through the
.Xr Pstatus 3PROC
function.
.Pp
Note, attempting to modify the process flags only works on active
processes.
Attempting to call these functions of process handles corresponding to core
files, zombie processes, or files, will result in an error.
.Sh RETURN VALUES
Upon successful completion, the
.Fn Psetflags
and
.Fn Punsetflags
functions return
.Sy 0 .
Otherwise,
.Sy -1
is returned
and
.Sy errno
is set to indicate the error.
.Sh ERRORS
For a full list of possible errors see the
.Sy DIAGNOSTICS
section in
.Xr proc 5 .
.Sh INTERFACE STABILITY
.Sy Uncommitted
.Sh MT-LEVEL
See
.Sy LOCKING
in
.Xr libproc 3LIB .
.Sh SEE ALSO
.Xr libproc 3LIB ,
.Xr Pstatus 3PROC ,
.Xr proc 5
